9648. Сортировка цифр числа

 

Рассмотрим последовательность всех натуральных чисел от a до b. В каждом числе отсортируем цифры по возрастанию. Найдите сумму полученных чисел.

 

Вход. Два натуральных числа a и b (a b ≤ 106).

 

Выход. Выведите сумму полученных чисел.

 

Пример входа

Пример выхода

19 22

55

 

 

РЕШЕНИЕ

сортировка

 

Анализ алгоритма

Переберем числа от a до b. Преобразуем каждое число в строку. Отсортируем символы в строке, после чего цифры будут расположены по возрастанию. Преобразуем строку в число и прибавим к результирующей сумме.

 

Пример

В примере a = 19, b = 22. Числами от a до b будут: 19, 20, 21, 22. После сортировки цифр в числах получим числа: 19, 02, 12, 22. Сумма чисел равна 19 + 2 + 12 + 22 = 55.

 

Реализация алгоритма

Читаем входные данные.

 

scanf("%d %d", &a, &b);

 

В переменной sum будем вычислять требуемую сумму чисел.

 

sum = 0;

 

Перебираем числа от a до b.

 

for (i = a; i <= b; i++)

{

 

Преобразовываем число i в строку s.

 

  string s = to_string(i);

 

Сортируем цифры строки s.

 

  sort(s.begin(), s.end());

 

Преобразовываем строку s в число val и прибавляем его к сумме sum.

 

  sscanf(s.c_str(), "%lld", &val);

  sum += val;

}

 

Выводим ответ.

 

printf("%lld\n", sum);